package com.stellar.auth.basic.service;

import com.stellar.auth.basic.entity.AuthRolePermission;

import java.util.List;

/**
 * 角色权限关联表(AuthRolePermission)服务接口
 *
 * @author Jqchan
 * @since 2025-05-16 18:07:33
 */
public interface AuthRolePermissionService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    AuthRolePermission queryById(Long id);

    /**
     * 条件查询单条结果
     *
     * @param condition 查询条件
     * @return 实例对象
     */
    AuthRolePermission queryByCondition(AuthRolePermission condition);

    /**
     * 条件查询全部结果
     *
     * @param condition 查询条件
     * @return 实例对象列表
     */
    List<AuthRolePermission> queryAllByCondition(AuthRolePermission condition);

    /**
     * 分页查询
     *
     * @param condition 查询条件
     * @param page      页码
     * @param pageSize  每页数量
     * @return 分页结果
     */
    List<AuthRolePermission> page(AuthRolePermission condition, int page, int pageSize);

    /**
     * 新增数据
     *
     * @param entity 实例对象
     * @return 影响行数
     */
    int insert(AuthRolePermission entity);

    /**
     * 修改数据
     *
     * @param entity 实例对象
     * @return 影响行数
     */
    int update(AuthRolePermission entity);

    /**
     * 通过主键删除
     *
     * @param id 主键ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 条件统计
     *
     * @param condition 统计条件
     * @return 总数
     */
    Long count(AuthRolePermission condition);

    /**
     * 批量插入
     *
     * @param authRolePermissions
     */
    void insertBatch(List<AuthRolePermission> authRolePermissions);

    /**
     * 通过角色ID删除
     *
     * @param id
     */
    void deleteByRoleId(Long id);

    /**
     * 通过角色ID查询
     *
     * @param roleId
     * @return
     */
    List<AuthRolePermission> queryByRoleId(Long roleId);

    /**
     * 通过角色ID查询
     *
     * @param roleIds
     * @return
     */
    List<AuthRolePermission> queryByRoleIds(List<Long> roleIds);

    /**
     * 根据权限ID删除单个权限的关联关系
     *
     * @param permissionId
     */
    void deleteByPermissionId(Long permissionId);

    /**
     * 批量删除权限ID列表的关联关系
     *
     * @param permissionIds
     */
    void batchDeleteByPermissionIds(List<Long> permissionIds);
}
